package ${basepackage}.${service_project_name}.service;

import ${basepackage}.${service_project_name}.domin.${table.className}Bean;

import java.util.List;
import ac.zlf.maven.mybatis.page.Page;
import ac.zlf.maven.mybatis.page.PageParam;


public interface ${table.className}BeanService {

    /**
     * 通过ID查找bean
     * @param id        [必填] ID
     * @return          如果能查询到，返回bean对象；如果查询不到，返回null
     */
    public ${table.className}Bean findBeanById(${table.idColumn.simpleJavaType} id);

    /**
     * 通过ID查找一个可用的bean
     * @param id        [必填] ID
     * @return          如果能查询到，且bean可用(状态等条件正常)，返回bean对象；查询不到，抛异常；
     */
    public ${table.className}Bean findAvailableBeanById(${table.idColumn.simpleJavaType} id);

    /**
     * 分页查找
     * @param pageParam        [必填] pageParam对象
     * @param ${table.classNameFirstLower}Bean        非必填，分页条件
     * @return                   分页对象
     */
    public Page<${table.className}Bean> findBeanPage(PageParam pageParam, ${table.className}Bean ${table.classNameFirstLower}Bean);

    /**
     * 查找所有指定条件对象
     * @param ${table.classNameFirstLower}Bean        [必填] 查询条件
     * @return                   满足条件的对象集合
     */
    public List<${table.className}Bean> findBeanAll(${table.className}Bean ${table.classNameFirstLower}Bean);

    /**
     * 新增
     * @param ${table.classNameFirstLower}Bean        [必填] 对象信息
     */
    public void doAdd(${table.className}Bean ${table.classNameFirstLower}Bean);

    /**
     * 编辑
     * @param ${table.classNameFirstLower}Bean        [必填] 对象信息
     */
    public void doUpdate(${table.className}Bean ${table.classNameFirstLower}Bean);

    /**
     * 软删除
     * @param id        [必填] ID
     */
    public void doDel(${table.idColumn.simpleJavaType} id);

    /**
     * 硬删除
     * @param id        [必填] ID
     */
    public void doDelete(${table.idColumn.simpleJavaType} id);
}